/*******************************************************************************
 * 版权：北京润尼尔网络科技有限公司，保留所有版权<br>
 * 版本：v1.0.0<br>
 * 文件：ModelEventHandlerFactory.js<br>
 * 日期：2016年9月20日<br>
 * 作者: 王志远<br>
 * 功能：模型事件处理工厂<br>
 * 
 * 修改记录：<br>
 * 日期 描述 更新功能<br>
 ******************************************************************************/

window.makeNamespace(window,"Rainier.UI.V2");

/**
 * 类型名称：Rainier.UI.V2.ModelEventRequest<br>
 * 类型功能：模型事件请求<br>
 */
Rainier.UI.V2.ModelEventHandlerFactory = Rainier.Basic.CompositeObject.extend({
	
	NAME : "Rainier.UI.V2.ModelEventHandlerFactory",
	
	/**
	 * 函数名称：Rainier.UI.V2.ModelEventHandlerFactory.init<br>
	 * 函数功能：构造函数<br>
	 * 异常信息：无<br>
	 */
	init : function(){
		this._super();
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.ModelEventHandlerFactory.createHandler<br>
	 * 函数功能：创建模型事件处理器<br>
	 * 参数输入：modelEventRequest:Rainier.UI.V2.ModelEventRequest<br>
	 * 函数返回：Rainier.UI.V2.ModelEventHandler<br>
	 * 异常信息：无<br>
	 */
	createHandler : function(modelEventRequest){
		var event = modelEventRequest.event.getEventName();
		var handler = null;
		
		//创建属性值变化处理器
		if(event === Rainier.UI.V2.AbstractModel.MODEL_EVENT_PROPERTY_VALUE_CHANGED){
			handler = new Rainier.UI.V2.ModelEventHandlerPropertyValueChanged(modelEventRequest);
		}
		
		//创建位置变化处理器
		if(event === Rainier.UI.V2.AbstractModel.MODEL_EVENT_POSITION_CHANGED){
			handler = new Rainier.UI.V2.ModelEventHandlerPositionChanged(modelEventRequest);
		}
		
		//创建尺寸变化处理器
		if(event === Rainier.UI.V2.AbstractModel.MODEL_EVENT_DIMENSION_CHANGED){
			handler = new Rainier.UI.V2.ModelEventHandlerDimensionChanged(modelEventRequest);
		}
		
		//创建添加端口处理器
		if(event === Rainier.UI.V2.CompositeModel.MODEL_EVENT_ADD_PORT){
			handler = new Rainier.UI.V2.ModelEventHandlerAddPort(modelEventRequest);
		}
		
		//创建删除端口处理器
		if(event === Rainier.UI.V2.CompositeModel.MODEL_EVENT_REMOVE_PORT){
			handler = new Rainier.UI.V2.ModelEventHandlerRemovePort(modelEventRequest);
		}
		
		//创建添加链接处理器
		if(event === Rainier.UI.V2.CompositeModel.MODEL_EVENT_ADD_CONNECTION){
			handler = new Rainier.UI.V2.ModelEventHandlerAddConnection(modelEventRequest);
		}
		
		//创建删除连接处理器
		if(event === Rainier.UI.V2.CompositeModel.MODEL_EVENT_REMOVE_CONNECTION){
			handler = new Rainier.UI.V2.ModelEventHandlerRemoveConnection(modelEventRequest);
		}
		
		//创建添加子模型处理器
		if(event === Rainier.Basic.CompositeObject.SC_S_EVENT_ADD_CHILD){
			handler = new Rainier.UI.V2.ModelEventHandlerAddChild(modelEventRequest);
		}

		//创建删除子模型处理器
		if(event === Rainier.Basic.CompositeObject.SC_S_EVENT_REMOVE_CHILD){
			handler = new Rainier.UI.V2.ModelEventHandlerRemoveChild(modelEventRequest);
		}
		
		//创建改变UI属性处理器
		if(event === Rainier.UI.V2.AbstractModel.MODEL_EVENT_UI_PROPERTY_CHANGED){
			handler = new Rainier.UI.V2.ModelEventHandlerUiPropertyChanged(modelEventRequest);
		}
		
		return handler;
	}
});